/*
 *  GameState.h
 *  Created by Jason Townes French on 4/30/08.
 *
 */

#ifndef __GAMESTATE_H__
#define __GAMESTATE_H__

//OGRE Libs
#include <Ogre.h>
//#include <OgreKeyEvent.h>

//Game Libs
#include "GameManager.h"
class GameState
{
	public:
		virtual void enter(Ogre::Root* r) = 0;
		virtual void exit() = 0;
		
		virtual void pause() = 0;
		virtual void resume() = 0;
		
		/*
		virtual void keyClicked(Ogre::KeyEvent* e) = 0;
		virtual void keyPressed(Ogre::KeyEvent* e) = 0;
		virtual void keyReleased(Ogre::KeyEvent* e) = 0;
		
		virtual bool frameStarted(const Ogre::FrameEvent& evt) = 0;
		virtual bool frameEnded(const Ogre::FrameEvent& evt) = 0;
		*/
		
		void changeState(GameState* s);
		void pushState(GameState* s);
		void popState();
		
		Ogre::RenderWindow* getWindow();
		
	private:
		
	protected:
		GameState();
		
};

#endif
